#### Exerccio 9 ####

#Exerccios de Construo de Funes
#Exerccio Programar 1.: QUE FRIO!
#Tarefa: Construa uma funo que calcula automaticamente o valor de graus Celsius, sabendo-se a temperatura em Fahrenheit. 

#C = 5/9 * (F- 32) 

# Funo Fapracel- lindo nome !


fapracel = function(x)
	      {
	      fahrenheit=(x)
	      celcius=5/9*(x-32)
		return(celcius)}

fapracel
str(fapracel)
args(fapracel)#ok


#vamos testar !
# de acordo com o: Fahrenheit to Celsius Converter do National Weather Service
#site:http://www.wbuf.noaa.gov/tempfc.htm

#100 Fahrenheit  igual a 37.77777777777778 celcius
# de acordo com a funo fapracel :

fapracel(100)#  37.77778 - Vitria !!! 


#Exerccio Programar 2. : Anlise exploratria simultnea de duas variveis
#Tarefa: Crie uma funo para sada grfica de anlises exploratrias de duas variveis. Essa sada pode ter por exemplo boxplot, histograma, qq norm e y por x. A funo deve permitir a entrada de dois objetos vetores de mesmo tamanho (x e y).
#Caso os valores de x e y forem desenhados em um mesmo grfico, defina cores diferentes. As legendas devem ser em portugus e a sada (return) deve apresentar o sumrio das duas variveis e o coeficiente de correlao. 

#DICAS: 

#Para histogramas com variveis em um mesmo grfico pode ser utilizada a funo multhist() do pacote plotrix. Baixe, instale o pacote e veja o help da funo.
#Utilize o cdigo do eda.shape, apresentado em aula como ponto de partida.
#Lembre-se que em algumas funes grficas o argumento add=TRUE, adiciona elementos no grfico anterior.

search()# nada de plotrix
###instalando###
require(plotrix)
search()#ok 
help(multhist)

# Dada uma lista, traa um barplot lado a lado, contendo os histogramas dos elementos 
#multhist(x,beside=TRUE,freq=NULL,probability=!freq,plot.it=TRUE,...)

multhist(x)
plot(x)
qqnorm(x)
qqline(x)


var1=c(1,2,3,4,10,4,5,9)
var2=c(5,2,9,9,10,30,9,2)


expl.dupla = function(x,y){

 		par(mfrow=c(3,1),bty="l")
		qqx=qqnorm(x, col="blue", xlab="Varivel a", ylab="")
		qlx=qqline(x)
		qqy=qqnorm(y,col="red",xlab="Varivel b", ylab="")
		qly=qqline(y)
		box=boxplot(x,y,col="gray", names=c("Varivel a", "Varivel b"))
				}

expl.dupla(var1,var2)


##Programar 3: ndices de Diversidade de Espcies
#Tarefa: Construa funes para computar os seguintes ndices de diversidade de espcies: 

#ndice de Shannon: $$H = - sump_i * ln p_i$$
#ndice de Simpson: $$D = sump_i^2$$
#onde $$p_i$$  a proporo da espcie $$i$$ em relao ao nmero total de indivduos na amostra ($$n_i/N$$) 

#1.O objeto de entrada na funo ser uma matriz com a abundncia das espcies nas linhas e amostras nas colunas. 
#2.A funo deve retornar um dos dois ndices de diversidade, escolhido pelo usurio, calculado para cada amostra (coluna). 
#3.Considere a possibilidade de haver valores faltantes (NA) nessa matriz e que esse ser removido para o clculo.


#criando matriz

matriz=matrix(NA, 30,2)
sp1=rnorm(30, 10, 5)
sp2=rnorm(30, 15,5)

matriz[,1]=sp1
matriz[,2]=sp2

matriz [5,2]=NA
matriz[20,1]=NA
matriz# matriz com NAS


#ndice de Shannon. Mede o grau de incerteza em prever a que espcie pertencer um indivduo escolhido, ao acaso, de uma amostra com S espcies e N indivduos. 
# H' = - pi ln pi 
#ndice de Simpson.  um ndice de dominncia e reflete a probabilidade de dois indivduos escolhidos ao acaso na comunidade pertencerem  mesma espcie. 

indices= function(dados,rm.na=TRUE)
##########  NAs ##########
 {if(rm.na== TRUE)
{
dados= as.matrix(na.omit(dados))}

else	{dados=dados} 


soma= apply(dados,2,sum,na.rm=TRUE)
pi.ind=t(dados)/soma
  

##indice de shannon### 
 	{
	log=pi.ind*log(pi.ind)
 shannon=(-1)*apply(log,1,sum,na.rm=TRUE)
 		
## indice de simpson##
 	
	pi2=pi.ind^2
 	simpson=apply(pi2,1,sum,na.rm=TRUE)
 	}
 	cat("indice de shannon = ",  shannon, /t)
	cat("indice de simpson = ",  simpson)

 } 
 
indices # est aqui !

#para testar
matriz=matrix(NA, 30,2)
matriz

sp1=rnorm(30,10,5)
sp2=rnorm(30,15,5)
matriz[,1]=sp1
matriz[,2]=sp2
matriz[4,2]=NA
matriz #- feito
matriz
indices(matriz)














